package com.naml.g_buffered;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 * @author marin
 * @version 1.0
 * @date 2025/4/23 20:27
 * @desc 演示 bufferedReader 使用 --读取文本数据到程序中
 */
@SuppressWarnings("all")
public class BufferedReader01 {

    /*
    * 节点流和处理流的区别：
    *   1、节点流是底层流/低级流，直接跟数据源相接。
    *   2、处理流其实就是包装节点流，既可以消除不同节点流的实现差异，也可以提供更方便的方法来完成输入输出。
    *   3、处理流其实就是利用修饰器设计模式，不会直接与数据源相连接。
    * 主要体现：
    *   性能提高：
    *       性能主要是以增加缓冲的方式提高了输入和输出。
    *   操作快捷：
    *       提供了一些方法可以处理大量的数据传输。
    * */
    public static void main(String[] args) {
        String path = "/Users/marin/new3.txt";
        BufferedReader bufferedReader = null;
        try {
            FileReader fileReader = new FileReader(path);
            bufferedReader = new BufferedReader(fileReader);
            //按行读取,效率高
            String line;
            while ((line = bufferedReader.readLine()) != null){
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }finally {
            //只需关闭外层流即可，也就是包装流---因为底层会自动的去关闭 节点流
            try {
                bufferedReader.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
